package controllers;
/**
* the class responsible for the input and output of the polynomials. Note that the input is going to be an array of integers
* e.g.: p1 = 2 0 -1 4 (meaning p1 = 2x^3 - x + 4)
* some functions (e.g. evaluateAt(p, x)) work properly only if x is provided
*/
import views.*;
import models.*;
public class InputOutput {
/**
* generates the adding of the inputs provided in window
*
* @param window
*/
public static void add(Window window) {
window.getOutput()
.setText(
Functions
.add(StringToPolynomial.stringToIntPolynomial(window.getInput1().getText()),
StringToPolynomial.stringToIntPolynomial(window.getInput2().getText()))
.toString());
}
/**
* generates the subtracting of the inputs provided in window
*
* @param window
*/
public static void sub(Window window) {
window.getOutput()
.setText(
Functions
.subtract(StringToPolynomial.stringToIntPolynomial(window.getInput1().getText()),
StringToPolynomial.stringToIntPolynomial(window.getInput2().getText()))
.toString());
}
/**
* generates the multiplying of the inputs provided in window
*
* @param window
*/
public static void mul(Window window) {
window.getOutput()
.setText(
Functions
.multiply(StringToPolynomial.stringToIntPolynomial(window.getInput1().getText()),
StringToPolynomial.stringToIntPolynomial(window.getInput2().getText()))
.toString());
}
/**
* generates the division of the inputs provided in window
*
* @param window
*/
public static void div(Window window) {
Polynomial[] p = new Polynomial[2];
try {
p = Functions.divide(StringToPolynomial.stringToRealPolynomial(window.getInput1().getText()),
StringToPolynomial.stringToRealPolynomial(window.getInput2().getText()));
window.getOutput().setText(p[0].toString() + "; " + p[1].toString());
} catch (ArithmeticException e) {
window.getOutput().setText(e.getMessage());
}
}
/**
* generates the differentiation of the first input provided in window
*
* @param window
*/
public static void diff1(Window window) {
window.getOutput().setText(Functions
.differentiate(StringToPolynomial.stringToIntPolynomial(window.getInput1().getText())).toString());
}
/**
* generates the differentiation of the second input provided in window
*
* @param window
*/
public static void diff2(Window window) {
window.getOutput().setText(Functions
.differentiate(StringToPolynomial.stringToIntPolynomial(window.getInput2().getText())).toString());
}
/**
* generates the integration of the first input provided in window
*
* @param window
*/
public static void int1(Window window) {
window.getOutput().setText(Functions
.integrate(StringToPolynomial.stringToRealPolynomial(window.getInput1().getText())).toString());
}
/**
* generates the integration of the second input provided in window
*
* @param window
*/
public static void int2(Window window) {
window.getOutput().setText(Functions
.integrate(StringToPolynomial.stringToRealPolynomial(window.getInput2().getText())).toString());
}
/**
* evaluates p1 at x
*
* @param window
*/
public static void evalP1(Window window) {
window.getOutput()
.setText(Double.toString(
Functions.evaluateAt(StringToPolynomial.stringToIntPolynomial(window.getInput1().getText()),
Integer.parseInt(window.getInputX().getText()))));
}
/**
* evaluates p2 at x
*
* @param window
*/
public static void evalP2(Window window) {
window.getOutput()
.setText(Double.toString(
Functions.evaluateAt(StringToPolynomial.stringToIntPolynomial(window.getInput2().getText()),
Integer.parseInt(window.getInputX().getText()))));
}
/**
* finds the closest root to x of polynomial p1
*
* @param window
*/
public static void rootP1(Window window) {
try {
window.getOutput()
.setText(Double.toString(Functions.rootArroundPoint(
StringToPolynomial.stringToIntPolynomial(window.getInput1().getText()),
Integer.parseInt(window.getInputX().getText()))));
} catch (HasNoRealRootException e) {
window.getOutput().setText(e.getMessage());
}
}
/**
* finds the closest root to x of polynomial p2
*
* @param window
*/
public static void rootP2(Window window) {
try {
window.getOutput()
.setText(Double.toString(Functions.rootArroundPoint(
StringToPolynomial.stringToIntPolynomial(window.getInput2().getText()),
Integer.parseInt(window.getInputX().getText()))));
} catch (HasNoRealRootException e) {
window.getOutput().setText(e.getMessage());
}
}
/**
* graphs p1
*
* @param window
*/
public static void graphP1(Window window) {
new GraphFrame(StringToPolynomial.stringToIntPolynomial(window.getInput1().getText()), "GraphP1");
}
/**
* graphs p2
*
* @param window
*/
public static void graphP2(Window window) {
new GraphFrame(StringToPolynomial.stringToIntPolynomial(window.getInput2().getText()), "GraphP2");
}
}